From 5cd7a862510ed80d1c6bdf6b52b185dd0014da55 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 7 Nov 2007 16:51:08 +0000 Subject: [PATCH] ioemu: Do not use PAGE_SHIFT/PAGE_SIZE/PAGE_MASK macros. Use the libxc provided versions. Signed-off-by: Keir Fraser --- tools/ioemu/hw/pass-through.c | 14 ++++---- tools/ioemu/hw/xen_machine_fv.c | 59 +++++++++++++++------------------ 2 files changed, 33 insertions(+), 40 deletions(-) diff --git a/tools/ioemu/hw/pass-through.c b/tools/ioemu/hw/pass-through.c index 8645faa29d..07a308e2cc 100644 --- a/tools/ioemu/hw/pass-through.c +++ b/tools/ioemu/hw/pass-through.c @@ -20,8 +20,8 @@ * Guy Zana * * This file implements direct PCI assignment to a HVM guest - * */ + #include "vl.h" #include "pass-through.h" #include "pci/header.h" @@ -128,9 +128,9 @@ void pt_iomem_map(PCIDevice *d, int i, uint32_t e_phys, uint32_t e_size, { /* Remove old mapping */ ret = xc_domain_memory_mapping(xc_handle, domid, - old_ebase >> PAGE_SHIFT, - assigned_device->bases[i].access.maddr >> PAGE_SHIFT, - (e_size+PAGE_MASK) >> PAGE_SHIFT, + old_ebase >> XC_PAGE_SHIFT, + assigned_device->bases[i].access.maddr >> XC_PAGE_SHIFT, + (e_size+XC_PAGE_MASK) >> XC_PAGE_SHIFT, DPCI_REMOVE_MAPPING); if ( ret != 0 ) { @@ -141,9 +141,9 @@ void pt_iomem_map(PCIDevice *d, int i, uint32_t e_phys, uint32_t e_size, /* Create new mapping */ ret = xc_domain_memory_mapping(xc_handle, domid, - assigned_device->bases[i].e_physbase >> PAGE_SHIFT, - assigned_device->bases[i].access.maddr >> PAGE_SHIFT, - (e_size+PAGE_MASK) >> PAGE_SHIFT, + assigned_device->bases[i].e_physbase >> XC_PAGE_SHIFT, + assigned_device->bases[i].access.maddr >> XC_PAGE_SHIFT, + (e_size+XC_PAGE_MASK) >> XC_PAGE_SHIFT, DPCI_ADD_MAPPING); if ( ret != 0 ) PT_LOG("Error: create new mapping failed!\n"); diff --git a/tools/ioemu/hw/xen_machine_fv.c b/tools/ioemu/hw/xen_machine_fv.c index 68b04f9e00..af49519233 100644 --- a/tools/ioemu/hw/xen_machine_fv.c +++ b/tools/ioemu/hw/xen_machine_fv.c @@ -27,13 +27,6 @@ #include #include -#ifndef PAGE_SIZE -#define PAGE_SIZE XC_PAGE_SIZE -#endif -#ifndef PAGE_SHIFT -#define PAGE_SHIFT XC_PAGE_SHIFT -#endif - #if defined(MAPCACHE) #if defined(__i386__) @@ -57,7 +50,7 @@ struct map_cache { unsigned long paddr_index; uint8_t *vaddr_base; - DECLARE_BITMAP(valid_mapping, MCACHE_BUCKET_SIZE>>PAGE_SHIFT); + DECLARE_BITMAP(valid_mapping, MCACHE_BUCKET_SIZE>>XC_PAGE_SHIFT); }; static struct map_cache *mapcache_entry; @@ -71,9 +64,9 @@ static int qemu_map_cache_init(void) { unsigned long size; - nr_buckets = (((MAX_MCACHE_SIZE >> PAGE_SHIFT) + - (1UL << (MCACHE_BUCKET_SHIFT - PAGE_SHIFT)) - 1) >> - (MCACHE_BUCKET_SHIFT - PAGE_SHIFT)); + nr_buckets = (((MAX_MCACHE_SIZE >> XC_PAGE_SHIFT) + + (1UL << (MCACHE_BUCKET_SHIFT - XC_PAGE_SHIFT)) - 1) >> + (MCACHE_BUCKET_SHIFT - XC_PAGE_SHIFT)); /* * Use mmap() directly: lets us allocate a big hash table with no up-front @@ -81,7 +74,7 @@ static int qemu_map_cache_init(void) * that we actually use. All others will contain all zeroes. */ size = nr_buckets * sizeof(struct map_cache); - size = (size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1); + size = (size + XC_PAGE_SIZE - 1) & ~(XC_PAGE_SIZE - 1); fprintf(logfile, "qemu_map_cache_init nr_buckets = %lx size %lu\n", nr_buckets, size); mapcache_entry = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0); @@ -97,7 +90,7 @@ static void qemu_remap_bucket(struct map_cache *entry, unsigned long address_index) { uint8_t *vaddr_base; - unsigned long pfns[MCACHE_BUCKET_SIZE >> PAGE_SHIFT]; + unsigned long pfns[MCACHE_BUCKET_SIZE >> XC_PAGE_SHIFT]; unsigned int i, j; if (entry->vaddr_base != NULL) { @@ -108,11 +101,11 @@ static void qemu_remap_bucket(struct map_cache *entry, } } - for (i = 0; i < MCACHE_BUCKET_SIZE >> PAGE_SHIFT; i++) - pfns[i] = (address_index << (MCACHE_BUCKET_SHIFT-PAGE_SHIFT)) + i; + for (i = 0; i < MCACHE_BUCKET_SIZE >> XC_PAGE_SHIFT; i++) + pfns[i] = (address_index << (MCACHE_BUCKET_SHIFT-XC_PAGE_SHIFT)) + i; vaddr_base = xc_map_foreign_batch(xc_handle, domid, PROT_READ|PROT_WRITE, - pfns, MCACHE_BUCKET_SIZE >> PAGE_SHIFT); + pfns, MCACHE_BUCKET_SIZE >> XC_PAGE_SHIFT); if (vaddr_base == NULL) { fprintf(logfile, "xc_map_foreign_batch error %d\n", errno); exit(-1); @@ -121,10 +114,10 @@ static void qemu_remap_bucket(struct map_cache *entry, entry->vaddr_base = vaddr_base; entry->paddr_index = address_index; - for (i = 0; i < MCACHE_BUCKET_SIZE >> PAGE_SHIFT; i += BITS_PER_LONG) { + for (i = 0; i < MCACHE_BUCKET_SIZE >> XC_PAGE_SHIFT; i += BITS_PER_LONG) { unsigned long word = 0; - j = ((i + BITS_PER_LONG) > (MCACHE_BUCKET_SIZE >> PAGE_SHIFT)) ? - (MCACHE_BUCKET_SIZE >> PAGE_SHIFT) % BITS_PER_LONG : BITS_PER_LONG; + j = ((i + BITS_PER_LONG) > (MCACHE_BUCKET_SIZE >> XC_PAGE_SHIFT)) ? + (MCACHE_BUCKET_SIZE >> XC_PAGE_SHIFT) % BITS_PER_LONG : BITS_PER_LONG; while (j > 0) word = (word << 1) | (((pfns[i + --j] >> 28) & 0xf) != 0xf); entry->valid_mapping[i / BITS_PER_LONG] = word; @@ -143,10 +136,10 @@ uint8_t *qemu_map_cache(target_phys_addr_t phys_addr) entry = &mapcache_entry[address_index % nr_buckets]; if (entry->vaddr_base == NULL || entry->paddr_index != address_index || - !test_bit(address_offset>>PAGE_SHIFT, entry->valid_mapping)) + !test_bit(address_offset>>XC_PAGE_SHIFT, entry->valid_mapping)) qemu_remap_bucket(entry, address_index); - if (!test_bit(address_offset>>PAGE_SHIFT, entry->valid_mapping)) + if (!test_bit(address_offset>>XC_PAGE_SHIFT, entry->valid_mapping)) return NULL; last_address_index = address_index; @@ -215,7 +208,7 @@ static void xen_init_fv(uint64_t ram_size, int vga_ram_size, char *boot_device, xc_get_hvm_param(xc_handle, domid, HVM_PARAM_IOREQ_PFN, &ioreq_pfn); fprintf(logfile, "shared page at pfn %lx\n", ioreq_pfn); - shared_page = xc_map_foreign_range(xc_handle, domid, PAGE_SIZE, + shared_page = xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE, PROT_READ|PROT_WRITE, ioreq_pfn); if (shared_page == NULL) { fprintf(logfile, "map shared IO page returned error %d\n", errno); @@ -224,7 +217,7 @@ static void xen_init_fv(uint64_t ram_size, int vga_ram_size, char *boot_device, xc_get_hvm_param(xc_handle, domid, HVM_PARAM_BUFIOREQ_PFN, &ioreq_pfn); fprintf(logfile, "buffered io page at pfn %lx\n", ioreq_pfn); - buffered_io_page = xc_map_foreign_range(xc_handle, domid, PAGE_SIZE, + buffered_io_page = xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE, PROT_READ|PROT_WRITE, ioreq_pfn); if (buffered_io_page == NULL) { fprintf(logfile, "map buffered IO page returned error %d\n", errno); @@ -233,7 +226,7 @@ static void xen_init_fv(uint64_t ram_size, int vga_ram_size, char *boot_device, #elif defined(__ia64__) - nr_pages = ram_size/PAGE_SIZE; + nr_pages = ram_size/XC_PAGE_SIZE; page_array = (xen_pfn_t *)malloc(nr_pages * sizeof(xen_pfn_t)); if (page_array == NULL) { @@ -241,17 +234,17 @@ static void xen_init_fv(uint64_t ram_size, int vga_ram_size, char *boot_device, exit(-1); } - shared_page = xc_map_foreign_range(xc_handle, domid, PAGE_SIZE, + shared_page = xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE, PROT_READ|PROT_WRITE, - IO_PAGE_START >> PAGE_SHIFT); + IO_XC_PAGE_START >> XC_PAGE_SHIFT); - buffered_io_page =xc_map_foreign_range(xc_handle, domid, PAGE_SIZE, + buffered_io_page =xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE, PROT_READ|PROT_WRITE, - BUFFER_IO_PAGE_START >> PAGE_SHIFT); + BUFFER_IO_XC_PAGE_START >> XC_PAGE_SHIFT); - buffered_pio_page = xc_map_foreign_range(xc_handle, domid, PAGE_SIZE, + buffered_pio_page = xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE, PROT_READ|PROT_WRITE, - BUFFER_PIO_PAGE_START >> PAGE_SHIFT); + BUFFER_PIO_XC_PAGE_START >> XC_PAGE_SHIFT); for (i = 0; i < nr_pages; i++) page_array[i] = i; @@ -259,9 +252,9 @@ static void xen_init_fv(uint64_t ram_size, int vga_ram_size, char *boot_device, /* VTI will not use memory between 3G~4G, so we just pass a legal pfn to make QEMU map continuous virtual memory space */ if (ram_size > MMIO_START) { - for (i = 0 ; i < (MEM_G >> PAGE_SHIFT); i++) - page_array[(MMIO_START >> PAGE_SHIFT) + i] = - (STORE_PAGE_START >> PAGE_SHIFT); + for (i = 0 ; i < (MEM_G >> XC_PAGE_SHIFT); i++) + page_array[(MMIO_START >> XC_PAGE_SHIFT) + i] = + (STORE_XC_PAGE_START >> XC_PAGE_SHIFT); } phys_ram_base = xc_map_foreign_batch(xc_handle, domid, -- 2.30.2